System.Collections.ObjectModel.ObservableCollection T,<klasa T>

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Klasa ObservableCollection<T> reprezentuje dynamiczną kolekcję danych, która dostarcza powiadomienia po dodaniu lub usunięciu elementów albo odświeżeniu całej listy.

W wielu przypadkach dane, z którymi pracujesz, to kolekcja obiektów. Na przykład typowym scenariuszem powiązania danych jest użycie elementu ItemsControl takiego jak ListBox, ListViewlub TreeView w celu wyświetlenia kolekcji rekordów.

Możesz wyliczyć dowolną kolekcję, która implementuje interfejs IEnumerable. Aby jednak skonfigurować powiązania dynamiczne tak, aby wstawienie lub usunięcie w kolekcji automatycznie zaktualizowało interfejs użytkownika, kolekcja musi zaimplementować interfejs INotifyCollectionChanged. Ten interfejs uwidacznia CollectionChanged zdarzenie, które powinno być zgłaszane za każdym razem, gdy podstawowa kolekcja ulegnie zmianie.

Klasa ObservableCollection<T> jest typem zbierania danych, który implementuje INotifyCollectionChanged interfejs.

Przed wdrożeniem własnej kolekcji rozważ użycie ObservableCollection<T> lub jednej z istniejących klas kolekcji, takich jak, między innymi, List<T>, Collection<T> i BindingList<T>. Jeśli masz zaawansowany scenariusz i chcesz zaimplementować własną kolekcję, rozważ użycie metody IList, która udostępnia niegeneryjną kolekcję obiektów, do których można uzyskać dostęp indywidualnie według indeksu. Implementacja IList zapewnia najlepszą wydajność aparatu powiązania danych.

Uwaga

Aby w pełni obsługiwać przesyłanie wartości danych z obiektów źródłowych powiązania do elementów docelowych powiązania, każdy obiekt w kolekcji obsługujący właściwości możliwe do powiązania musi zaimplementować odpowiedni mechanizm powiadamiania o zmianie właściwości, taki jak INotifyPropertyChanged interfejs.

Aby uzyskać więcej informacji, zobacz "Wiązanie z kolekcjami" w temacie Omówienie powiązania danych.

Uwagi dotyczące użycia XAML

ObservableCollection<T> może być używany jako element obiektu XAML w programie Windows Presentation Foundation (WPF) w wersjach 3.0 i 3.5. Jednak użycie ma znaczne ograniczenia.

  • ObservableCollection<T> musi być elementem głównym, ponieważ x:TypeArguments atrybut, który musi być używany do określenia ograniczonego typu ogólnego ObservableCollection<T> , jest obsługiwany tylko w elemecie object dla elementu głównego.

  • Należy zadeklarować x:Class atrybut (co oznacza, że akcja kompilacji dla tego pliku XAML musi być Page lub inną akcją kompilacji, która kompiluje XAML).

  • ObservableCollection<T> znajduje się w przestrzeni nazw i zestawie, które nie są początkowo mapowane na domyślną przestrzeń nazw XML. Musisz zamapować prefiks przestrzeni nazw i zestawu, a następnie użyć tego prefiksu w tagu elementu obiektu dla .ObservableCollection<T>

Prostszym sposobem używania ObservableCollection<T> funkcji z języka XAML w aplikacji jest zadeklarowanie własnej niestandardowej klasy kolekcji, która pochodzi z ObservableCollection<T>klasy , i ogranicza ją do określonego typu. Następnie zamapuj zestaw zawierający tę klasę i odwołaj się do niego jako element obiektu w języku XAML.